package net.zoneland.zrdp.biz.enums;

import lombok.Getter;
import net.zoneland.zrdp.biz.common.Constants;
import net.zoneland.zrdp.common.enums.BaseEnum;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * fixme 这个不应该定义成枚举，这种不是固定项应该直接放一个表中保存数据。
 * 统一的流程模板信息配置.
 * 1、去掉之前的拟稿名称（拟稿）、拟稿节点编码（draft）、拟稿修改节点编码（draftEdit）三个属性的信息，这三点基本都是一样的统一做成默认规则，不需要额外配置.
 * 2、若存在后台自动拟稿启动，第一个节点要求固定名称的情况下，就从拟稿直接跳到自定的固定节点。
 * @version v1.0
 */
@Getter
public enum BusinessprocessEnum implements BaseEnum<String> {
    /**
     * 示例流程信息配置.
     * **/
    DEMO_FLOW("demoFlow", "示例流程", "draft,draftEdit", "示例流程表单", "DEMO");

    /** 流程模板编号. **/
    private final String value;
    /** 流程模板名称. **/
    private final String name;
    /** 流程中可修改节点，多个以逗号分隔.*/
    private final String editNodes;
    /** 流程表单标题. **/
    private final String formTitle;
    /** 工单号前缀：一般可以是流程模板编码或缩写（会自动加上时间后缀），最后形如DEMO202210123092. **/
    private final String workIdPrefix;

    BusinessprocessEnum(final String value, final String name, final String editNodes,
                        final String formTitle, final String workIdPrefix) {
        this.value = value;
        this.name = name;
        this.editNodes = editNodes;
        this.formTitle = formTitle;
        this.workIdPrefix = workIdPrefix;
    }

    /**
     * 获取所有流程模板，以逗号分隔.
     * @return java.lang.String
     **/
    public static String getAllTemplates() {
        return Arrays.stream(BusinessprocessEnum.values()).map(BusinessprocessEnum::getValue)
            .collect(Collectors.joining(Constants.SPLIT_COMMA));
    }
}
